package com.situ.day25.producer;

import java.util.LinkedList;

public class Panzi extends Object{
    // 只在头部移除removeFirst，只在尾部添加addLast
    private LinkedList<Cake> list = new LinkedList<>();

    public synchronized void putCake(Cake cake) {
        // 在队列的尾部添加
        list.addLast(cake);
        notifyAll();// 生产了蛋糕之后通知正在wait的消费者线程去吃这些蛋糕
        System.out.println("生产者线程 putCake notifyAll");
    }

    // 在wait和notifyAll上都要加上synchronized
    public synchronized Cake getCake() {
        if (list.size() <= 0) { // 盘子里面没有蛋糕了，所以要wait等待
            try {
                System.out.println("消费者线程 getCake  wait");
                wait();// 盘子里面没有蛋糕，需要等待生产者生产蛋糕
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 队列头部删除
        Cake cake = list.removeFirst();
        return cake;
    }
}
